/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package interfaces;
import entidades.Cliente;
import erros.ErroAtualizacao;
import erros.ErroCadastramento;
import erros.ErroRecuperacao;
/**
 * Interface que provê os serviços prestados pela controladora
 * de negócio da entidade Cliente.
 * @author thiagostuckert
 * @author daniel
 */
public interface IGerenciaCliente {
    /**
     * Cadastra o cliente na base de dados.
     * @param cliente Cliente a ser cadastrado.
     * @throws ErroCadastramento Joga a exceção de erro de cadastramento.
     */
    public void cadastrarCliente(Cliente cliente)
            throws ErroCadastramento;

    /**
     * Atualiza um cliente antigo com novos dados.
     * @param cliente Cliente a ser atualizado.
     * @param clienteNovo Dados novos do cliente.
     * @throws ErroAtualizacao Joga a exceção de erro de atualização.
     */
    public void atualizarCliente(Cliente cliente,Cliente clienteNovo)
            throws ErroAtualizacao;

    /**
     * Recupera um cliente da base de dados.
     * @param cliente Cliente a ser recuperado.
     * @return Cliente e dados associados recuperados.
     * @throws ErroRecuperacao Joga a exceção de erro de recuperação.
     */
    public Cliente recuperarCliente(Cliente cliente) throws
            ErroRecuperacao;
}
